package com.ray.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.CompanyBean;
import com.ray.bean.DepartmentBean;
import com.ray.bean.PersonBean;
import com.ray.bean.RecruitApplyBean;
import com.ray.bean.UserBean;
import com.ray.bean.WeiXinPeopleBean;
import com.ray.pojo.MyUser;
import com.ray.pojo.User;
import com.ray.pojo.UserDeptWorkPojo;

public interface UserMapper {

	//添加需要接受微信消息人
	void addSend(@Param("userList")List<User> userList);

	//获取需要接受消息人
	List<User> getSendPeople(@Param("dapartmentId") String dapartmentId);

	//获取登录用户
	MyUser getUser(@Param("user")MyUser user);

	//获取主管信息
	UserBean getManager(@Param("workShop")String workShop);

	//通过微信id获取用户
	UserBean getUserByWeiXinId(@Param("weiXinUserId")String weiXinUserId);

	//插入用户
	void insertUser(@Param("userBean")UserBean userBean);

	//修改密码
	void updatePassword(@Param("user")MyUser myuser);

	//获取用户部门
	String getDepartment(@Param("userName")String userName);

	//批量添加人员
	void addPeopleByFile(@Param("userList")List<UserBean> userList);

	//获取部门成员
	List<UserBean> getDeptUser(Map map);

	//通过用户名或者手机号获取用户信息，用户角色配置界面
	List<UserBean> querryUserByNameOrPhone(@Param("nameOrPhone")String nameOrPhone, @Param("company")String company);

	//查找公司所有用户
	List<UserBean> queryAllUser(Map map);
	
	//根据任意条件获取用户bean
	UserBean getUserBean(UserBean userBean);

	//获取id对应的所有用户
//	List<UserBean> getHaveUser(@Param("idList")List<String> haveIdList);

    //获取不在用户列表中的数据
//	List<UserBean> getNoHaveUser(Map map);

	//获取部门用户
	List<UserBean> getDepartmentUser(Map map);
	/**
	 * 查询公司
	* @date 2018年4月20日 下午1:57:22 
	* @author 李斌
	* @return void 
	* @throws
	 */ 
	CompanyBean getCompanyInfo(@Param("companyName")String companyName);
	/**
	 * 获取公司里所有的部门
	* @date 2018年5月11日 下午7:13:22 
	* @author 李斌
	* @return List<DepartmentBean> 
	* @throws 
	 */
	List<DepartmentBean> getAllDepartment(Map<String, Object> map);

//	 校验用户名和手机号
	List<String> checkUser(@Param("userName")String userName, @Param("phone")String phone, @Param("userId")String userId,@Param("company") String company);
 
	/**
	 * 通过登录令牌获取用户
	 * @param loginToken
	 * @param company 
	 * @return
	 */
	List<MyUser> getUserByToken(Map map);
	
	/**
	 * 通过部门名称获取userId
	* @date 2018年6月1日 上午11:42:26 
	* @author 李斌
	* @return List<String> 
	* @throws 
	 */
	List<String> getUserIdByDeptName(Map map);
	
	/**
	 * 通过部门获取用户对象
	* @date 2018年6月1日 下午1:44:34 
	* @author 李斌
	* @return List<UserBean> 
	* @throws
	 */
	List<UserBean> getDeptUserByDeptName(Map map);
	
	/**
	 * 通过用户ids 获取用户信息
	* @date 2018年6月2日 下午2:33:00 
	* @author 李斌
	* @return List<UserBean> 
	* @throws
	 */
	List<UserBean> getUserByIds(Map<String, Object> approvalParam);
	/**
	 * 通过用户名获取用户Id
	* @date 2018年6月5日 上午10:30:18 
	* @author 李斌
	* @return List<String> 
	* @throws
	 */
	List<String> getUserIdsByNames(Map<String, Object> map);
	
	/**
	 * 通过id获取用户信息
	* @date 2018年6月5日 下午1:58:39 
	* @author 李斌
	* @return UserBean 
	* @throws
	 */
	UserBean getUserById(Map map);
	
	/**
	 * 根据用户名查询用户信息
	* @date 2018年6月6日 上午10:05:49 
	* @author 李斌
	* @return List<String> 
	* @throws
	 */
	List<UserBean> getUserBeanByNames(Map<String, Object> map);

	
	/**
	 * 获取接受生产异常消息的人  车间主管以上以及公司注册人
	 * @param company(公司 )
	 * @param workShopId(车间id)
	 * @param deptId(部门id)
	 * @return
	 */
	List<WeiXinPeopleBean> getAcceptProductionExceptionUser(@Param("company")String company, @Param("workShopId")String workShopId,@Param("deptId")String deptId);

	/**
	 * 从数据库中获取accesstoken
	 * @param format
	 * @return
	 */
	String getAccessToken();

	/**
	 * 保存accessToken
	 * @param accessToken
	 * @param publicName 公众号
	 */
	void insertAccessToken(@Param("accessToken")String accessToken,@Param("publicName") String publicName);

	/**
	 * 获取三分钟以内的验证码
	 * @param user
	 * @return
	 */
	List<String> getVerificationCode(@Param("user")MyUser user);
	
	/**
	 * 获取人员信息,内含部门与车间信息
	* @date 2018年9月5日 上午8:55:49 
	* @author 李斌
	* @return List<UserDeptWorkPojo> 
	* @throws
	 */
	List<UserDeptWorkPojo> getUserByDeptAndWork(Map<String, Object> map);

	/**
	 * 获取公司使用情况
	 * @return
	 */
	List<Map> getCompanyUseDetail();

	/**
	 * 添加招聘申请
	 * @param map
	 * @return
	 */
	int addApplyRecruit(Map<String, Object> map);

	/**
	 * 获取申请招聘记录
	 * @param map
	 * @return
	 */
	int getApplyRecruitCount(Map<String, Object> map);
	List<RecruitApplyBean> getApplyRecruit(Map<String, Object> map);

	/**
	 * 审核申请
	 * @param map
	 * @return
	 */
	int approvalApplyRecruit(Map<String, Object> map);

	/**
	 * 应聘者扫码添加人员
	 * @param map
	 * @return
	 */
	int addCandidateByQRCode(Map map);

	/**
	 * 插入工作经历
	 * @param map
	 * @return
	 */
	int addWorkExperience(Map map);

	/**
	 * 获取招聘记录
	 * @param map
	 * @return
	 */
	List<PersonBean> getCandidateRecordList(Map<String, Object> map);
	int getCandidateRecordListCount(Map<String, Object> map);

	/**
	 * 审核应聘信息
	 * @param map
	 * @return
	 */
	int approvalCandidate(Map<String, Object> map);

	
	

}
